home *** CD-ROM | disk | FTP | other *** search
-
- ; INCLUDE MMacros
- ; INCLUDE diskfont/diskfont.i
-
- MAIN:
- LEA BSS_START,A4 ;A4= ->BSS SECTION
- MOVE.L 4,A6
- MOVE.L D0,ARGLEN(A4)
- ; MOVE.L A0,ARGPTR(A4)
- MOVE.L A6,A5 ;A5=EXEC
- CLEARA A1
- CALL FindTask
- MOVE.L D0,A3 ;A3=PTR TO OUR PROCESS
- ; MOVE.L pr_CurrentDir(A3),D2 ;D2=LOCK FOR CURRENTDIR FROM CLI
- TST.L pr_CLI(A3)
- BNE.S DOLIBS
- FROMWB:
- LEA pr_MsgPort(A3),A0
- CALL WaitPort
- LEA pr_MsgPort(A3),A0
- CALL GetMsg
- MOVE.L D0,ARGPTR(A4)
- CLR.L ARGLEN(A4)
- ; MOVE.L D0,A0
- ; MOVE.L sm_ArgList(A0),A1
- ; MOVE.L wa_Lock(A1),D2 ;D2=LOCK FOR CURRENTDIR FROM WB
- DOLIBS:
- MOVEQ #0,D0
- LEA DOS(PC),A1
- CALL OpenLibrary
- MOVE.L D0,DOSBASE(A4)
- BEQ NODOS
-
- MOVE.L D0,A6
- LEA FILENAME(PC),A1
- MOVE.L A1,D1
- CALL DeleteFile
-
- MOVE.L A5,A6
- MOVEQ #0,D0
- LEA FONT(PC),A1
- CALL OpenLibrary
- MOVE.L D0,FONTBASE(A4)
- BEQ NOFONT
-
- MOVE.L D0,A6
- MOVEQ #AFF_DISK,D1
- MOVEQ #0,D0
- LEA ERRORNUM(A4),A0
- CALL AvailFonts
- MOVE.L D0,D6
- BEQ NOFONTS
-
- MOVE.L A5,A6
- MOVEQ #0,D1
- ADDQ.L #4,D0
- CALL AllocMem
- MOVE.L D0,D7
- BEQ NOMEM
- ADDQ.L #4,D7
-
- MOVE.L FONTBASE(A4),A6
- MOVEQ #AFF_DISK,D1
- MOVE.L D6,D0
- MOVE.L D7,A0
- CALL AvailFonts
- TST.L D0
- BNE.S NOCANGROW
-
- MOVE.L D7,A3
- ADD.L D6,A3
-
- MOVE.L D7,A2
- MOVE.W (A2)+,D1 ;NUMBER OF AvailFonts
- BRA.S SKIP
- LOOP:
- ADDQ.L #af_Attr+ta_Name,A2
- MOVE.L (A2)+,D0
- CMP.L A3,D0
- BGE.S NOTBIGGER
- MOVE.L D0,A3
- NOTBIGGER:
- ADDQ.L #ta_SIZEOF-ta_YSize,A2
- SKIP:
- DBRA.S D1,LOOP
-
- MOVE.L D7,A0
- MOVE.L A3,D0
- MOVE.L D6,D1
-
- SUB.L A2,D0
-
- SUB.L D0,D1
- MOVE.L D1,-(A0)
-
- ADD.L D7,D0
-
- MOVE.L D7,A1
- MOVE.W (A1)+,D1
- BRA.S SKIP2
- LOOP2:
- ADDQ.L #af_Attr+ta_Name,A1
- SUB.L D0,(A1)+
- ADDQ.L #ta_SIZEOF-ta_YSize,A1
- SKIP2:
- DBRA.S D1,LOOP2
-
- MOVE.L DOSBASE(A4),A6
- LEA FILENAME(PC),A1
- MOVE.L A1,D1
- MOVE.L #MODE_NEWFILE,D2
- CALL Open
- MOVE.L D0,D5
- BEQ.S NOFILE
-
- MOVE.L D5,D1 ;FILE PTR
- MOVE.L D7,D2
- SUBQ.L #4,D2 ;ADDRESS
- MOVE.L A2,D3
- SUB.L D2,D3 ;BYTES TO WRITE
- CALL Write
- CMP.W D3,D0
- BNE.S BADWRITE
-
- MOVE.L D5,D1 ;FILE PTR
- MOVE.L A3,D2 ;ADDRESS
-
- SUB.L D7,A3
- MOVE.L D6,D3
- SUB.L A3,D3 ;BYTES TO WRITE
- CALL Write
- CMP.L D3,D0
- BNE.S BADWRITE
- CLOSEFILE:
- MOVE.L D5,D1
- CALL Close
-
- NOFILE:
- NOCANGROW:
- MOVE.L A5,A6
- MOVE.L D6,D0
- ADDQ.L #4,D0
- MOVE.L D7,A1
- SUB.L #4,A1
- CALL FreeMem
- NOMEM:
- MOVE.L FONTBASE(A4),A1
- CALL CloseLibrary
- NOFONT:
- MOVE.L DOSBASE(A4),A1
- CALL CloseLibrary
- NODOS:
- TST.L ARGLEN(A4)
- BNE.S NOWB
- CALL Forbid
- MOVE.L ARGPTR(A4),A1 ;A1= ->WBSTARTUP MESSAGE
- CALL ReplyMsg
- NOWB:
- MOVE.L ERRORNUM(A4),D0
- RTS
-
- BADWRITE:
- MOVE.L D5,D1
- CALL Close
- LEA FILENAME(PC),A1
- MOVE.L A1,D1
- CALL DeleteFile
- MOVE.W #20,ERRORNUM+2(A4)
- BRA.S NOFILE
-
- NOFONTS:
- MOVE.W #10,ERRORNUM+2(A4)
- MOVE.L A5,A6
- BRA.S NOMEM
-
- CNOP 0,4
- FILENAME:
- DC.B 'FONTS:_FontList',0
- CNOP 0,4
- DOS:
- DC.B 'dos.library',0
- CNOP 0,4
- FONT:
- DC.B 'diskfont.library',0
- VERSION:
- DC.B '$VER: FixFontList 1.1 (23.03.99)',0
-
-
- SECTION Bss,BSS
- BSS_START: ;(A4)
- ARGLEN:
- DS.L 1
- ARGPTR:
- DS.L 1
- DOSBASE:
- DS.L 1
- FONTBASE:
- DS.L 1
- ERRORNUM:
- DS.L 1
-